module type ASet =
  sig
    type t
    val zero : t
    val one : t
    val succ : t -> t
    val pred : t -> t
    val add : t -> t -> t
    val ord : t -> int
    val make : int -> t
  end
 
module type S =
sig
  type t
  val sum : t -> t
  val even : t -> bool
  val div2 : t -> t
  val mul2 : t -> t
  val mul : t -> t -> t
end
 
module Make :
  functor (T : ASet) -> S with type t = T.t

